﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Project.Model
{
    public class Bord
    {
        private Vak first;
        private Speler[] spelers;

        public Bord(Speler[] spelers)
        {
            this.spelers = spelers;
            Vak temp = new Vak(0, VakType.Vak_Normaal);
            this.first = temp;
            for (int i = 0; i < spelers.Count(); i++)
            {
                Vak vak2 = new Vak(1 + (10 * i), VakType.Vak_Normaal);
                temp.Next = vak2;
                vak2.NextEind = spelers[i].Vak_eind[0];
                vak2.Next = spelers[i].Vak_a;
                spelers[i].Vak_a.VakNummer = 2 + (10 * i);
                Vak vak3 = new Vak(3 + (10 * i), VakType.Vak_Normaal);
                spelers[i].Vak_a.Next = vak3;

                temp = vak3;
                for (var j = 0; j < 7; j++)
                {
                    if (i == 3 && j == 5)
                    {
                    }
                    else
                    {
                        Vak temp2 = new Vak((3 + j) + (i * 10), VakType.Vak_Normaal);
                        temp.Next = temp2;
                        temp = temp2;
                    }
                }
                spelers[i].Vak_eind[0].VakNummer = 41 + (i * 4);
                spelers[i].Vak_eind[1].VakNummer = 42 + (i * 4);
                spelers[i].Vak_eind[2].VakNummer = 43 + (i * 4);
                spelers[i].Vak_eind[2].VakNummer = 44 + (i * 4);

                spelers[i].Vak_b[0].VakNummer = 57 + (i * 4);
                spelers[i].Vak_b[1].VakNummer = 58 + (i * 4);
                spelers[i].Vak_b[2].VakNummer = 59 + (i * 4);
                spelers[i].Vak_b[3].VakNummer = 60 + (i * 4);
            }
            temp.Next = first;
        }

        public void PlaatsPion(Pion pion, int vakNummer)
        {
            Vak vak = this.first;
            bool bln = true;
            while (bln)
            {
                if (vak.VakNummer == vakNummer)
                {
                    pion.Vak.Pion = null;
                    vak.setPion(pion);
                    bln = false;
                }
                vak = vak.Next;
                if (vak == this.first)
                {
                    bln = false;
                }
            }

            for (int i = 0; i < 4; i++)
            {
                for(int j = 0; j < 4; j++) 
                {
                    if(this.spelers[i].Vak_b[j].VakNummer == vakNummer)
                    {
                        pion.Vak.Pion = null;
                        this.spelers[i].Vak_b[j].setPion(pion);
                    }
                    if (this.spelers[i].Vak_eind[j].VakNummer == vakNummer)
                    {
                        pion.Vak.Pion = null;
                        this.spelers[i].Vak_eind[j].setPion(pion);
                    }
                }
            }
        }

        // First Property
        public Vak First
        {
            get { return first; }
            set { first = value; }
        }
    }
}
